<?php

namespace View;

class RegisterView{
	

	private $m_username = "username";
	private $m_pass = "pass";
	private $m_pass2 = "pass2";
	private $m_register = "register";

	private $m_validation = null;
	
	// Konstanter med meddelanden som skall kunna visas för användaren
	const USER_EXISTS = "Användaren finns redan";
	const EMPTY_USERNAME = "Användarnamnet är tomt";
	const PASSWORD_NOT_ACCEPTED = "Lösenord är felaktigt";
	const SUCCESS = "Användaren registrerad";
	const GENERIC_ERROR = "Något gick fel i registreringen";
	

	public function __construct()
	{
		$this->m_validation = new \View\Validation();
	}

	/**
	 * Skapar ett fomulär för att registrera sig
	 */
	public function CreateRegisterForm(){	
		
		return "
		<div id='register'>
			<h2>Ny användare</h2>
			<form method='post'>
				<input type='text' name='$this->m_username' id='username' class='textinput' placeholder='Användarnamn' />
				</br>										
				<input type='password' name='$this->m_pass' id='password' class='textinput' placeholder='Lösenord' />
				</br>					
				<input type='password' name='$this->m_pass2' id='password2' class='textinput' placeholder='Upprepa lösenord' />
				</br>
				<input type='submit' name='$this->m_register' class='btn btn-info' value='Registrera' />				
			</form>				
		</div>
		"
		;		
	}
	
	/**
	 * Funktion för att hämta utt ett användarnamn
	 * @param Object $validation ett validerignsobjekt skickas med för att det hämtade användarnamnet skall kunna kontrolleras så att det är giltigt
	 */
	public function GetUserName(){
					
		if (isset($_POST[$this->m_username])) {
			
			return $this->m_validation->StringValidationNonHTML($_POST[$this->m_username]);			
		}
		else{
			return false;
		}
	}
	
	/**
	 * Funktion för att hämta ut ett lösenord, båda lösenorden måste stämma överrens med varandra
	 * @param Object $validation ett valideringsobjekt skickas med för att det hämtade användarnamnet skall kunna kontrolleras så att det är giltigt
	 */
	public function GetPassword(){
		
		if (isset($_POST[$this->m_pass])){

			if ($_POST[$this->m_pass] == $_POST[$this->m_pass2]) {
					
				if ($this->m_validation->PasswordValidation($_POST[$this->m_pass])){
								
					// Returnerar lösenordet
					return $_POST[$this->m_pass];
				}
			}			
		}				
		else{
			return false;	
		}									
	}
	
	/**
	 * Kontrollerar om användaren har klickat på knappen för att registrera sig
	 */
	public function TriedToRegister(){
		return isset($_POST[$this->m_register]);
	}
	
	/**
	 * Tar emot en array och formaterar för utskrift
	 * @param Array $messages innehåller de meddelanden som skall skrivas ut till använaderen
	 */
	public function GenerateMessageOutput($messages) {
		$startDiv = "<div class='error'>";
		$output = "";
		foreach ($messages as $message) {
			$output .= $message . "</br>";
		}

		$endDiv = "</div>";
		return $startDiv . $output . $endDiv;
	}
}
